package model;

import java.util.Collection;

import persistencia.AdministradorPersistenciaProducto;

public abstract class Prenda extends Producto {
	
	protected int stock;
	protected Collection<ItemMaterial> items;
	
	
	public abstract float getPrecio(); /* DECLARACION DE METODO ABSTRACTO */
	
	/* CREA UN ITEM MATERIAL ASOCIADO A UNA PRENDA */
	
	public void crearItemMaterial(Material material, float cantidad) {
		
		ItemMaterial i = null;
		i = new ItemMaterial(material, cantidad);
		AdministradorPersistenciaProducto.getInstancia().insertItemMaterial(codigo, material.getCodigo(), cantidad);
		items.add(i);
	
	}
	
	/* DEVUELVE STOCK */
	
	public float getStock(){
		return this.stock;
	}
	
	/* DESCUENTA STOCK */
	
	public void descontarStock(int cantidad){
		this.stock= this.stock-cantidad;
		AdministradorPersistenciaProducto.getInstancia().descontarStockPrenda(this,cantidad);
	}
	
	/* VERIFICA MATERIALES */
	
	public boolean verificarStockMateriales(float cantidad){
		boolean bandera = true;
		for(ItemMaterial item : items){
			bandera = item.verificarStock(cantidad);
			if (bandera == false){
				return false;
			}
			
		}
		return bandera;
	}
	
	/* AGREGA STOCK */

	public void agregarStock(int cantidad) {
		this.stock = this.stock + cantidad;
		for(ItemMaterial item : items){
			item.actualizarStock(cantidad);
		}
		
	}
	
	public boolean alcanzaStock(int cantidad){
		return (this.stock>=cantidad);
	}

	
	
}
